package cn.mandifal.manager.service.impl;

import cn.mandifal.manager.service.SellerManagementService;
import cn.mandifal.mapper.DpSellerMapper;
import cn.mandifal.pojo.DpSeller;
import cn.mandifal.pojo.DpSellerExample;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import entity.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 商家管理服务 实现层
 * @author  ws
 */
@Service
@Transactional
public class SellerManagementServiceImpl implements SellerManagementService {
    @Autowired
    private DpSellerMapper dpSellerMapper;

    /**
     * 查询所有的商家
     * @param pageNum 页码
     * @param pageSize 页面大小
     * @return 返回分页结果
     */
    @Override
    public PageResult findAllSeller(int pageNum,int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        Page<DpSeller> page= (Page<DpSeller>) dpSellerMapper.selectByExample(null);
        return new PageResult(page.getTotal(),page.getResult());
    }

    /**
     * 根据 id 查询商家详情
     * @param id 商家 id
     * @return 返回查到的商家
     */
    @Override
    public DpSeller findOneSeller(String id) {
        return  dpSellerMapper.selectByPrimaryKey(id);
    }

    /**
     * 更新商家状态
     * @param sellerid 商家 id
     * @param status    审核后的状态
     */
    @Override
    public void updateSellerStatus(String sellerid, String status) {
        DpSeller dpSeller = dpSellerMapper.selectByPrimaryKey(sellerid);
        dpSeller.setStatus(status);
        dpSellerMapper.updateByPrimaryKey(dpSeller);
    }

    /**
     * 条件查询
     * @param pageNum 页码
     * @param pageSize 页面大小
     * @param dpSeller 商家实体
     * @return 返回查到的结果,分页显示
     */
    @Override
    public PageResult search(int pageNum,int pageSize,DpSeller dpSeller) {
        PageHelper.startPage(pageNum,pageSize);
        DpSellerExample dpSellerExample=new DpSellerExample();
        DpSellerExample.Criteria criteria = dpSellerExample.createCriteria();
        if(dpSeller !=null){
            if(dpSeller.getName() !=null && dpSeller.getName().length()>0){
                criteria.andNameLike("%"+dpSeller.getName()+"%");
            }
            if (dpSeller.getNickName() !=null && dpSeller.getNickName().length()>0){
                criteria.andNickNameLike("%"+dpSeller.getNickName()+"%");
            }
            if (dpSeller.getStatus()!=null && dpSeller.getStatus().length()>0){
                criteria.andStatusLike(dpSeller.getStatus());
            }
        }
        Page<DpSeller> page= (Page<DpSeller>) dpSellerMapper.selectByExample(dpSellerExample);
        return new PageResult(page.getTotal(),page.getResult());
    }
}
